// ProjectName: go-learn-demo
// PackageName: _1_git_demo
// Description:
// Author: hy.bai
// Date: 2025-08-02 16:12

package ginybxb

import (
	"github.com/gin-gonic/gin"
	"log/slog"
)

// gin启动服务的步骤：
// 1.初始化Gin实例对象(git.Default())
// 2.注册路由(r.Get())
// 3.启动服务(r.Run())
func TestGinHello() {
	// 1.初始化gin实例
	r := gin.Default() // 是一个Engine指针类型
	// r := gin.New() // 是一个Engine指针类型
	// 注意:git.Default()和git.New()之间的区别？
	// 常用的是gin.Default()方法，在Default()方法中，已经内置了gin.Recovery()和gin.Logger()中间件,New()方法中没有。
	// 2.注册路由以及Handler
	// gin.Context，封装了request和response
	r.GET("/", func(context *gin.Context) {
		var data = "你好~, Golang"
		ginHandleResp(context, 2000, "操作成功", data)
	})
	// 3.监听端口，默认在8080
	var addr = ":8080"
	slog.Info("运行地址是:http://127.0.0.1" + addr)
	err := r.Run(addr)
	if err != nil {
		slog.Error("服务启动失败, 原因是:", err.Error())
	}
	// 注意：Run方法底层会调用http.ListenAndServe方法，而http.ListenAndServe方法会阻塞main协程。所以:Run()方法后面的代码不会执行
}
